/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mx.its.Daos;

import Modelo.Membresia;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;

/**
 *
 * @author Grnmnd
 */
public class MembresiaDao {

    EntityManagerFactory emf = Persistence.createEntityManagerFactory("CopySystemsPU");// fabrica de entitymanager
    EntityManager em = emf.createEntityManager();

    public void agregar(Membresia membresia) {
        em.getTransaction().begin();
        em.persist(membresia);// es como el insert
        em.getTransaction().commit();
    }

    public void editar(Membresia membresia) {
        em.getTransaction().begin();
        em.merge(membresia);// edita 
        em.getTransaction().commit();
    }

    public void eliminar(Membresia membresia) {
        em.getTransaction().begin();
        em.remove(em.merge(membresia));//elimina
        em.getTransaction().commit();
    }

    public List<Membresia> getTodo() {
        Query q = em.createNamedQuery("Membresia.findAll");
        return q.getResultList();
    }

    public Membresia getPorId(int id) {
        Query q = em.createNamedQuery("Membresia.findById");
        q.setParameter("id", id);
        if (q.getResultList().size() > 0) {
            return (Membresia) q.getResultList().get(0);
        } else {
            return null;
        }
    }

    public Membresia getPorNombre(String nombre) {
        Query q = em.createNamedQuery("Membresia.findByNombre");
        q.setParameter("nombre", nombre + "%");
        if (q.getResultList().size() > 0) {
            return (Membresia)q.getResultList().get(0);
        } else {
            return null;
        }
    }
    
    public List<Membresia> getBusqueda(String criterio) {
        Query q = em.createNamedQuery("Membresia.findByCriterio");
        q.setParameter("criterio", criterio + "%");
        if (q.getResultList().size() > 0) {
            return q.getResultList();
        } else {
            return null;
        }
    }
}
